package com.kaifamiao.iterator;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 1、for-each loop
 *    for( 类型 变量 : 目标 ){
 *    }
 *   这里的 目标 可以是 java.lang.Iterable 实现类的实例，也可以是 数组
 * 2、对于 Iterable实现类 来说，"for-each loop" 的本质上还是通过迭代器实现迭代操作的
 * 3、对于 数组 来说 ，"for-each loop" 的本质还是 普通 for 循环
 */
public class ForEachLoop {

    public static void main(String[] args) {

        // ArrayList类 实现了 List接口，
        // List接口 继承了 Collection接口，
        // Collection接口 继承了 Iterable接口
        Collection<String> names = new ArrayList<>();
        names.add( "孙悟空" );
        names.add( "孙行者" );
        names.add( "者行孙" );
        names.add( "行者孙" );

        // 引用变量 names 所指向的 ArrayList类 的实例 可以成为 "for-each loop" 语句的目标
        for( String name : names ){
            System.out.println( name );
        }

        /*
        for( Iterator<String> itor = names.iterator(); itor.hasNext() ; ) {
            String name = itor.next();
            System.out.println( name );
        }
        */

        System.out.println( "- ".repeat( 10 ) );
        
        char[] chars = { '歇', '了', '两', '天', '歇', '废', '了' };

        for( char ch : chars ){
            System.out.println( ch );
        }

        /*
        for( int i = 0 , n = chars.length ; i < n ; i++ ) {
            char ch = chars[i];
            System.out.println( ch );
        }
        */

    }

}
